package edu.zut.arrays;

import java.util.HashSet;
import java.util.Iterator;
import java.util.TreeSet;
import java.util.function.Consumer;

public class SetDemo {

    public static void main(String[] args) {
        //如果想要对set排序  使用treeset   自带升序
        //如果set中的元素是对象    此对象必须实现Comparable接口
        //整数、字符串在源码中已经实现了
        TreeSet<User> set = new TreeSet<>();
        set.add(new User("jack",82));
        set.add(new User("tom",83));
        set.add(new User("rose",81));
        set.add(new User("lucy",85));
        System.out.println(set);
        //java8提供的新特性  遍历
        set.stream().forEach(user -> System.out.println(user));
    }


    static void testHahSet(){
        //实例化    HashSet  无序  不能重复
        HashSet<String> set = new HashSet<>();
        set.add("jack");
        set.add("tom");
        set.add("rose");
        set.add("jack");
        set.add("lucy");
        set.add(null);
        System.out.println("set = " + set);
        //移除
        set.remove("jack");
        //获取元素   不能根据下标     遍历
        /*for (String s : set) {

        }*/
        //java8  我们的list、set、map都可以利用forEach进行遍历
        set.forEach(new Consumer<String>() {
            //此时accept的参数s就是当前集合遍历的结果
            @Override
            public void accept(String s) {
                System.out.println("s = " + s);
            }
        });

        //利用迭代器
        Iterator<String> iterator = set.iterator();
        while (iterator.hasNext()){
            String next = iterator.next();
            System.out.println(next);
        }
    }


}
class User implements Comparable<User>{

    String name;
    int score;

    User(String name,int score){
        this.name = name;
        this.score = score;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", score=" + score +
                '}';
    }

    @Override
    public int compareTo(User o) {
        return this.score - o.score;
    }
}